Scaling Program Synthesis by Exploiting Existing Code
نویسندگان
چکیده
Program synthesis automatically produces a program that meets a desired behavioral specification. While synthesis has seen success in a number of domains, interesting applications such as approximate computing and hardware synthesis require more scalability than existing approaches provide. The current approach in synthesis is to achieve scalability by decomposing the problem manually. Inspired by recent success in statistical language models, we propose instead exploiting existing code, using machine learning to guide the synthesis search and automatically decompose the problem. 1. The Need for Scalable Synthesis Program synthesis is the task of automatically producing a program that meets a desired correctness specification. Search-based synthesis [1, 5, 7, 12, 14, 15] searches for a correct program in a space of candidate implementations. Existing synthesis techniques include brute-force enumeration of the candidate space using dynamic programming [15]; random search with heuristics to explore more fruitful candidates [12]; or formulating the synthesis problem in a logic for an SMT solver to consume [5]. All of these techniques have advantages on particular classes of problems [1], and searchbased synthesis has seen success as a programming model in a variety of domains, including low-power spatial computing [9], bulk-synchronous distributed programming [16], and cache coherence protocols [15]. But many promising future applications of synthesis are impeded by the limited scalability of existing techniques: • Automated synthesis of symbolic execution engines [4] improves the reliability and reach of those tools, but existing work requires significant manual intervention to make the search tractable. • Our own recent work1 on applying synthesis to approximate computing [2] focused on approximations of small, manually identified kernels, because the synthesizer could not reason about the entire program. • Program synthesis could be used to automatically generate hardware implementations from programs. High-level synthesis tools [8] address this problem, but they make 1 Currently under submission. mov
منابع مشابه
Dwarf Frankenstein is still in your memory: tiny code reuse attacks
Code reuse attacks such as return oriented programming and jump oriented programming are the most popular exploitation methods among attackers. A large number of practical and non-practical defenses are proposed that differ in their overhead, the source code requirement, detection rate and implementation dependencies. However, a usual aspect among these methods is consideration of the common be...
متن کاملExploiting Register-Usage for Saving Register-File Energy in Embedded Processors
Low power register file design plays an important role in an embedded processor. In this paper, we exploit register-usage in a program to find out unused registers, and turn these unused registers into low power mode by annotating power-controlling instructions. The whole work is performed by applying the hardware/software co-design principle. For the hardware part, we propose a voltage-scaling...
متن کاملEmbedded code optimization via common control structure detection
This paper addresses the problem of efficient code generation for embedded reactive real-time systems. Such systems have tight memory-size and execution speed-constraints. A method is proposed based on the theory of Petri net synthesis aiming at reducing the size of the code by exploiting common control structures. Experimental results show that significant improvements can be obtained.
متن کاملCode Attention: Translating Code to Comments by Exploiting Domain Features
Appropriate comments of code snippets provide insight for code functionality, which are helpful for program comprehension. However, due to the great cost of authoring with the comments, many code projects do not contain adequate comments. Automatic comment generation techniques have been proposed to generate comments from pieces of code in order to alleviate the human efforts in annotating the ...
متن کاملImage-parallel Ray Tracing using OpenGL Interception
CPU Ray tracing in scientific visualization has been shown to be an efficient rendering algorithm for large-scale polygonal data on distributed-memory systems by using custom integrations which modify the source code of existing visualization tools or by using OpenGL interception to run without source code modification to existing tools. Previous implementations in common visualization tools us...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015